home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60src.lha / Vim / vim60 / src / feature.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-25  |  26.3 KB  |  1,102 lines

  1. /* vi:set ts=8 sts=0 sw=8:
  2.  *
  3.  * VIM - Vi IMproved        by Bram Moolenaar
  4.  *
  5.  * Do ":help uganda"  in Vim to read copying and usage conditions.
  6.  * Do ":help credits" in Vim to see a list of people who contributed.
  7.  */
  8. /*
  9.  * feature.h: Defines for optional code and preferences
  10.  *
  11.  * Edit this file to include/exclude parts of Vim, before compiling.
  12.  * The only other file that may be edited is Makefile, it contains machine
  13.  * specific options.
  14.  *
  15.  * To include specific options, change the "#if*" and "#endif" into comments,
  16.  * or uncomment the "#define".
  17.  * To exclude specific options, change the "#define" into a comment.
  18.  */
  19.  
  20. /*
  21.  * When adding a new feature:
  22.  * - Add a #define below.
  23.  * - Add a message in the table above ex_version().
  24.  * - Add a string to f_has().
  25.  * - Add a feature to ":help feature-list" in doc/eval.txt.
  26.  * - Add feature to ":help +feature-list" in doc/various.txt.
  27.  * - Add comment for the documentation of commands that use the feature.
  28.  */
  29.  
  30. /*
  31.  * Basic choices:
  32.  * ==============
  33.  *
  34.  * +tiny        almost no features enabled, not even multiple windows
  35.  * +small        few features enabled, as basic as possible
  36.  * +normal        A default selection of features enabled
  37.  * +big            many features enabled, as rich as possible.
  38.  * +huge        all possible featues enabled.
  39.  *
  40.  * When +small is used, +tiny is also included.  +normal implies +small, etc.
  41.  */
  42.  
  43. /*
  44.  * Uncomment one of these to override the default.  For unix use a configure
  45.  * argument, see Makefile.
  46.  */
  47. #if !defined(FEAT_TINY) && !defined(FEAT_SMALL) && !defined(FEAT_NORMAL) \
  48.     && !defined(FEAT_BIG) && !defined(FEAT_HUGE)
  49. /* #define FEAT_TINY */
  50. /* #define FEAT_SMALL */
  51. /* #define FEAT_NORMAL */
  52. /* #define FEAT_BIG */
  53. /* #define FEAT_HUGE */
  54. #endif
  55.  
  56. /*
  57.  * These executables are made available with the +big feature, because they
  58.  * are supposed to have enough RAM: Win32 (console & GUI), dos32, OS/2 and VMS.
  59.  * The dos16 version has very little RAM available, use +small.
  60.  */
  61. #if !defined(FEAT_TINY) && !defined(FEAT_SMALL) && !defined(FEAT_NORMAL) \
  62.     && !defined(FEAT_BIG) && !defined(FEAT_HUGE)
  63. # if defined(MSWIN) || defined(DJGPP) || defined(OS2) || defined(VMS) || defined(MACOS) || defined(AMIGA)
  64. #  define FEAT_BIG
  65. # else
  66. #  ifdef MSDOS
  67. #   define FEAT_SMALL
  68. #  else
  69. #   define FEAT_NORMAL
  70. #  endif
  71. # endif
  72. #endif
  73.  
  74. /*
  75.  * Each feature implies including the "smaller" ones.
  76.  */
  77. #ifdef FEAT_HUGE
  78. # define FEAT_BIG
  79. #endif
  80. #ifdef FEAT_BIG
  81. # define FEAT_NORMAL
  82. #endif
  83. #ifdef FEAT_NORMAL
  84. # define FEAT_SMALL
  85. #endif
  86. #ifdef FEAT_SMALL
  87. # define FEAT_TINY
  88. #endif
  89.  
  90. /*
  91.  * Optional code (see ":help +feature-list")
  92.  * =============
  93.  */
  94.  
  95. /*
  96.  * +windows        Multiple windows.  Without this there is no help
  97.  *            window and no status lines.
  98.  */
  99. #ifdef FEAT_SMALL
  100. # define FEAT_WINDOWS
  101. #endif
  102.  
  103. /*
  104.  * +listcmds        Vim commands for the buffer list and the argument
  105.  *            list.  Without this there is no ":buffer" ":bnext",
  106.  *            ":bdel", ":argdelete", etc.
  107.  */
  108. #ifdef FEAT_NORMAL
  109. # define FEAT_LISTCMDS
  110. #endif
  111.  
  112. /*
  113.  * +vertsplit        Vertically split windows.
  114.  */
  115. #ifdef FEAT_NORMAL
  116. # define FEAT_VERTSPLIT
  117. #endif
  118. #if defined(FEAT_VERTSPLIT) && !defined(FEAT_WINDOWS)
  119. # define FEAT_WINDOWS
  120. #endif
  121.  
  122. /*
  123.  * +cmdhist        Command line history.
  124.  */
  125. #ifdef FEAT_SMALL
  126. # define FEAT_CMDHIST
  127. #endif
  128.  
  129. /*
  130.  * +jumplist        Jumplist, CTRL-O and CTRL-I commands.
  131.  */
  132. #ifdef FEAT_SMALL
  133. # define FEAT_JUMPLIST
  134. #endif
  135.  
  136. /* the cmdline-window requires FEAT_VERTSPLIT and FEAT_CMDHIST */
  137. #if defined(FEAT_VERTSPLIT) && defined(FEAT_CMDHIST)
  138. # define FEAT_CMDWIN
  139. #endif
  140.  
  141. /*
  142.  * +folding        Fold lines.
  143.  */
  144. #ifdef FEAT_NORMAL
  145. # define FEAT_FOLDING
  146. #endif
  147.  
  148. /*
  149.  * +digraphs        Digraphs.
  150.  *            In insert mode and on the command line you will be
  151.  *            able to use digraphs. The CTRL-K command will work.
  152.  *            Define OLD_DIGRAPHS to get digraphs compatible with
  153.  *            Vim 5.x.  The new ones are from RFC 1345.
  154.  */
  155. #ifdef FEAT_NORMAL
  156. # define FEAT_DIGRAPHS
  157. /* #define OLD_DIGRAPHS */
  158. #endif
  159.  
  160. /*
  161.  * +langmap        'langmap' option.  Only useful when you put your
  162.  *            keyboard in a special language mode, e.g. for typing
  163.  *            greek.
  164.  */
  165. #ifdef FEAT_BIG
  166. # define FEAT_LANGMAP
  167. #endif
  168.  
  169. /*
  170.  * +keymap        'keymap' option.  Allows you to map typed keys in
  171.  *            Insert mode for a special language.
  172.  */
  173. #ifdef FEAT_BIG
  174. # define FEAT_KEYMAP
  175. #endif
  176.  
  177. /*
  178.  * +localmap        Mappings and abbreviations local to a buffer.
  179.  */
  180. #ifdef FEAT_NORMAL
  181. # define FEAT_LOCALMAP
  182. #endif
  183.  
  184. /*
  185.  * +insert_expand    CTRL-N/CTRL-P/CTRL-X in insert mode. Takes about
  186.  *            4Kbyte of code.
  187.  */
  188. #ifdef FEAT_NORMAL
  189. # define FEAT_INS_EXPAND
  190. #endif
  191.  
  192. /*
  193.  * +cmdline_compl    completion of mappings/abbreviations in cmdline mode.
  194.  *            Takes a few Kbyte of code.
  195.  */
  196. #ifdef FEAT_NORMAL
  197. # define FEAT_CMDL_COMPL
  198. #endif
  199.  
  200. #ifdef FEAT_NORMAL
  201. # define VIM_BACKTICK        /* internal backtick expansion */
  202. #endif
  203.  
  204. /*
  205.  * +textobjects        Text objects: "vaw", "das", etc.
  206.  */
  207. #ifdef FEAT_NORMAL
  208. # define FEAT_TEXTOBJ
  209. #endif
  210.  
  211. /*
  212.  * +visual        Visual mode.
  213.  * +visualextra        Extra features for Visual mode (mostly block operators).
  214.  */
  215. #ifdef FEAT_SMALL
  216. # define FEAT_VISUAL
  217. # ifdef FEAT_NORMAL
  218. #  define FEAT_VISUALEXTRA
  219. # endif
  220. #else
  221. # ifdef FEAT_CLIPBOARD
  222. #  undef FEAT_CLIPBOARD    /* can't use clipboard without Visual mode */
  223. # endif
  224. #endif
  225.  
  226. /*
  227.  * +virtualedit        'virtualedit' option and its implementation
  228.  */
  229. #ifdef FEAT_NORMAL
  230. # define FEAT_VIRTUALEDIT
  231. #endif
  232.  
  233. /*
  234.  * +vreplace        "gR" and "gr" commands.
  235.  */
  236. #ifdef FEAT_NORMAL
  237. # define FEAT_VREPLACE
  238. #endif
  239.  
  240. /*
  241.  * +cmdline_info    'showcmd' and 'ruler' options.
  242.  */
  243. #ifdef FEAT_NORMAL
  244. # define FEAT_CMDL_INFO
  245. #endif
  246.  
  247. /*
  248.  * +linebreak        'showbreak', 'breakat'  and 'linebreak' options.
  249.  */
  250. #ifdef FEAT_NORMAL
  251. # define FEAT_LINEBREAK
  252. #endif
  253.  
  254. /*
  255.  * +ex_extra        ":retab", ":right", ":left", ":center", ":normal".
  256.  */
  257. #ifdef FEAT_NORMAL
  258. # define FEAT_EX_EXTRA
  259. #endif
  260.  
  261. /*
  262.  * +extra_search    'hlsearch' and 'incsearch' options.
  263.  */
  264. #ifdef FEAT_NORMAL
  265. # define FEAT_SEARCH_EXTRA
  266. #endif
  267.  
  268. /*
  269.  * +quickfix        Quickfix commands.
  270.  */
  271. #ifdef FEAT_NORMAL
  272. # define FEAT_QUICKFIX
  273. #endif
  274.  
  275. /*
  276.  * +file_in_path    "gf" and "<cfile>" commands.
  277.  */
  278. #ifdef FEAT_NORMAL
  279. # define FEAT_SEARCHPATH
  280. #endif
  281.  
  282. /*
  283.  * +find_in_path    "[I" ":isearch" "^W^I", ":checkpath", etc.
  284.  */
  285. #ifdef FEAT_NORMAL
  286. # ifdef FEAT_SEARCHPATH    /* FEAT_SEARCHPATH is required */
  287. #  define FEAT_FIND_ID
  288. # endif
  289. #endif
  290.  
  291. /*
  292.  * +path_extra        up/downwards searching in 'path' and 'tags'.
  293.  */
  294. #ifdef FEAT_NORMAL
  295. # define FEAT_PATH_EXTRA
  296. #endif
  297.  
  298. /*
  299.  * +rightleft        Right-to-left typing and Hebrew support.
  300.  */
  301. #ifdef FEAT_BIG
  302. # define FEAT_RIGHTLEFT
  303. #endif
  304.  
  305. /*
  306.  * +farsi        Farsi (Persian language) Keymap support.
  307.  *            Needs FEAT_RIGHTLEFT.
  308.  */
  309. #ifdef FEAT_BIG
  310. # ifndef FEAT_RIGHTLEFT
  311. #  define FEAT_RIGHTLEFT
  312. # endif
  313. # define FEAT_FKMAP
  314. #endif
  315.  
  316. /*
  317.  * +emacs_tags        When FEAT_EMACS_TAGS defined: Include support for
  318.  *            emacs style TAGS file.
  319.  */
  320. #ifdef FEAT_BIG
  321. # define FEAT_EMACS_TAGS
  322. #endif
  323.  
  324. /*
  325.  * +tag_binary        Can use a binary search for the tags file.
  326.  *
  327.  * Disabled for EBCDIC:
  328.  * On OS/390 Unix we have the problem that /bin/sort sorts ASCII instead of
  329.  * EBCDIC.  With this binary search doesn't work, as VIM expects a tag file
  330.  * sorted by character values.  I'm not sure how to fix this. Should we really
  331.  * do a EBCDIC to ASCII conversion for this??
  332.  */
  333. #if defined(FEAT_NORMAL) && !defined(EBCDIC)
  334. # define FEAT_TAG_BINS
  335. #endif
  336.  
  337. /*
  338.  * +tag_old_static    Old style static tags: "file:tag  file  ..".  Slows
  339.  *            down tag searching a bit.
  340.  */
  341. #ifdef FEAT_NORMAL
  342. # define FEAT_TAG_OLDSTATIC
  343. #endif
  344.  
  345. /*
  346.  * +tag_any_white    Allow any white space to separate the fields in a tags
  347.  *            file.  When not defined, only a TAB is allowed.
  348.  */
  349. /* #define FEAT_TAG_ANYWHITE */
  350.  
  351. /*
  352.  * +cscope        Unix only: Cscope support.
  353.  */
  354. #if defined(UNIX) && defined(FEAT_BIG) && !defined(FEAT_CSCOPE)
  355. # define FEAT_CSCOPE
  356. #endif
  357.  
  358. /*
  359.  * +eval        Built-in script language and expression evaluation,
  360.  *            ":let", ":if", etc.
  361.  */
  362. #ifdef FEAT_NORMAL
  363. # define FEAT_EVAL
  364. #endif
  365.  
  366. /*
  367.  * +user_commands    Allow the user to define his own commands.
  368.  */
  369. #ifdef FEAT_NORMAL
  370. # define FEAT_USR_CMDS
  371. #endif
  372.  
  373. /*
  374.  * +printer        ":hardcopy" command
  375.  * +postscript        Printing uses PostScript file output.
  376.  */
  377. #if defined(FEAT_NORMAL) && (defined(MSWIN) || defined(FEAT_EVAL)) \
  378.     && !defined(AMIGA)
  379. # define FEAT_PRINTER
  380. #endif
  381. #if defined(FEAT_PRINTER) && ((defined(MSWIN) && defined(MSWINPS)) \
  382.     || (!defined(MSWIN) && defined(FEAT_EVAL)))
  383. # define FEAT_POSTSCRIPT
  384. #endif
  385.  
  386. /*
  387.  * +modify_fname    modifiers for file name.  E.g., "%:p:h".
  388.  */
  389. #ifdef FEAT_NORMAL
  390. # define FEAT_MODIFY_FNAME
  391. #endif
  392.  
  393. /*
  394.  * +autocmd        ":autocmd" command
  395.  */
  396. #ifdef FEAT_NORMAL
  397. # define FEAT_AUTOCMD
  398. #endif
  399.  
  400. /*
  401.  * +diff        Displaying diffs in a nice way.
  402.  *            Requires +windows and +autocmd.
  403.  */
  404. #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) && defined(FEAT_AUTOCMD)
  405. # define FEAT_DIFF
  406. #endif
  407.  
  408. /*
  409.  * +title        'title' and 'icon' options
  410.  * +statusline        'statusline', 'rulerformat' and special format of
  411.  *            'titlestring' and 'iconstring' options.
  412.  * +byte_offset        '%o' in 'statusline' and builtin functions line2byte()
  413.  *            and byte2line().
  414.  *            Note: Required for Macintosh.
  415.  */
  416. #if defined(FEAT_NORMAL) && !defined(MSDOS)
  417. # define FEAT_TITLE
  418. #endif
  419.  
  420. #ifdef FEAT_NORMAL
  421. # define FEAT_STL_OPT
  422. # ifndef FEAT_CMDL_INFO
  423. #  define FEAT_CMDL_INFO    /* 'ruler' is required for 'statusline' */
  424. # endif
  425. #endif
  426.  
  427. #ifdef FEAT_NORMAL
  428. # define FEAT_BYTEOFF
  429. #endif
  430.  
  431. /*
  432.  * +wildignore        'wildignore' and 'backupskip' options
  433.  *            Needed for Unix to make "crontab -e" work.
  434.  */
  435. #if defined(FEAT_NORMAL) || defined(UNIX)
  436. # define FEAT_WILDIGN
  437. #endif
  438.  
  439. /*
  440.  * +wildmenu        'wildmenu' option
  441.  */
  442. #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS)
  443. # define FEAT_WILDMENU
  444. #endif
  445.  
  446. /*
  447.  * +osfiletype        filetype checking in autocommand patterns.
  448.  *            Only on systems that support filetypes (RISC OS).
  449.  */
  450. #if 0
  451. # define FEAT_OSFILETYPE
  452. # define DFLT_OFT "Text"
  453. #endif
  454.  
  455. /*
  456.  * +viminfo        reading/writing the viminfo file. Takes about 8Kbyte
  457.  *            of code.
  458.  * VIMINFO_FILE        Location of user .viminfo file (should start with $).
  459.  * VIMINFO_FILE2    Location of alternate user .viminfo file.
  460.  */
  461. #ifdef FEAT_NORMAL
  462. # define FEAT_VIMINFO
  463. /* #define VIMINFO_FILE    "$HOME/foo/.viminfo" */
  464. /* #define VIMINFO_FILE2 "~/bar/.viminfo" */
  465. #endif
  466.  
  467. /*
  468.  * +syntax        syntax highlighting.  When using this, it's a good
  469.  *            idea to have +autocmd and +eval too.
  470.  */
  471. #if defined(FEAT_NORMAL) || defined(PROTO)
  472. # define FEAT_SYN_HL
  473. #endif
  474.  
  475. /*
  476.  * +builtin_terms    Choose one out of the following four:
  477.  *
  478.  * NO_BUILTIN_TCAPS    Do not include any builtin termcap entries (used only
  479.  *            with HAVE_TGETENT defined).
  480.  *
  481.  * (nothing)        Machine specific termcap entries will be included.
  482.  *            This is default for win16 to save static data.
  483.  *
  484.  * SOME_BUILTIN_TCAPS    Include most useful builtin termcap entries (used only
  485.  *            with NO_BUILTIN_TCAPS not defined).
  486.  *            This is the default.
  487.  *
  488.  * ALL_BUILTIN_TCAPS    Include all builtin termcap entries
  489.  *            (used only with NO_BUILTIN_TCAPS not defined).
  490.  */
  491. #ifdef HAVE_TGETENT
  492. /* #define NO_BUILTIN_TCAPS */
  493. #endif
  494.  
  495. #if !defined(NO_BUILTIN_TCAPS) && !defined(FEAT_GUI_W16)
  496. # ifdef FEAT_BIG
  497. #  define ALL_BUILTIN_TCAPS
  498. # else
  499. #  define SOME_BUILTIN_TCAPS        /* default */
  500. # endif
  501. #endif
  502.  
  503. /*
  504.  * +lispindent        lisp indenting (From Eric Fischer).
  505.  * +cindent        C code indenting (From Eric Fischer).
  506.  * +smartindent        smart C code indenting when the 'si' option is set.
  507.  *
  508.  * These two need to be defined when making prototypes.
  509.  */
  510. #if defined(FEAT_NORMAL) || defined(PROTO)
  511. # define FEAT_LISP
  512. #endif
  513.  
  514. #if defined(FEAT_NORMAL) || defined(PROTO)
  515. # define FEAT_CINDENT
  516. #endif
  517.  
  518. #ifdef FEAT_NORMAL
  519. # define FEAT_SMARTINDENT
  520. #endif
  521.  
  522. /*
  523.  * +comments        'comments' option.
  524.  */
  525. #ifdef FEAT_NORMAL
  526. # define FEAT_COMMENTS
  527. #endif
  528.  
  529. /*
  530.  * +cryptv        Encryption (by Mohsin Ahmed <mosh@sasi.com>).
  531.  */
  532. #if defined(FEAT_NORMAL) || defined(PROTO)
  533. # define FEAT_CRYPT
  534. #endif
  535.  
  536. /*
  537.  * +mksession        ":mksession" command.
  538.  *            Requires +windows and +vertsplit.
  539.  */
  540. #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) && defined(FEAT_VERTSPLIT)
  541. # define FEAT_SESSION
  542. #endif
  543.  
  544. /*
  545.  * +multi_lang        Multi language support. ":menutrans", ":language", etc.
  546.  * +gettext        Message translations (requires +multi_lang)
  547.  *            (only when "lang" archive unpacked)
  548.  */
  549. #ifdef FEAT_NORMAL
  550. # define FEAT_MULTI_LANG
  551. #endif
  552. #if defined(HAVE_GETTEXT) && defined(FEAT_MULTI_LANG) \
  553.     && (defined(HAVE_LOCALE_H) || defined(X_LOCALE))
  554. # define FEAT_GETTEXT
  555. #endif
  556.  
  557. /*
  558.  * +multi_byte        Generic multi-byte character handling.  Doesn't work
  559.  *            with 16 bit ints.
  560.  *
  561.  * Disabled for EBCDIC:
  562.  * Multibyte support doesn't work on OS390 Unix currently.
  563.  */
  564. #if defined(FEAT_BIG) && !defined(FEAT_MBYTE) && !defined(WIN16) \
  565.     && SIZEOF_INT >= 4 && !defined(EBCDIC)
  566. # define FEAT_MBYTE
  567. #endif
  568.  
  569. /*
  570.  * +multi_byte_ime    Win32 IME input method.  Requires +multi_byte.
  571.  *            Only for far-east Windows, so IME can be used to input
  572.  *            chars.  Not tested much!
  573.  */
  574. #if defined(FEAT_GUI_W32) && !defined(FEAT_MBYTE_IME)
  575. /* #define FEAT_MBYTE_IME */
  576. # endif
  577.  
  578. #if defined(FEAT_MBYTE_IME) && !defined(FEAT_MBYTE)
  579. # define FEAT_MBYTE
  580. #endif
  581.  
  582. #if defined(FEAT_MBYTE) && SIZEOF_INT < 4 && !defined(PROTO)
  583.     Error: Can only handle multi-byte feature with 32 bit int or larger
  584. #endif
  585.  
  586. /* Use iconv() when it's available. */
  587. #if defined(FEAT_MBYTE) && ((defined(HAVE_ICONV_H) && defined(HAVE_ICONV)) \
  588.         || defined(DYNAMIC_ICONV))
  589. # define USE_ICONV
  590. #endif
  591.  
  592. /*
  593.  * +xim            X Input Method.  For entering special languages like
  594.  *            chinese and Japanese.
  595.  * +hangul_input    Internal Hangul input method.  Must be included
  596.  *            through configure: "--enable-hangulin"
  597.  * Both are for Unix and VMS only.
  598.  */
  599. #ifndef FEAT_XIM
  600. /* #define FEAT_XIM */
  601. #endif
  602.  
  603. #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
  604. # define USE_XIM 1        /* needed for GTK include files */
  605. #endif
  606.  
  607. #ifdef FEAT_HANGULIN
  608. # define HANGUL_DEFAULT_KEYBOARD 2    /* 2 or 3 bulsik keyboard */
  609. # define ESC_CHG_TO_ENG_MODE        /* if defined, when ESC pressed,
  610.                      * turn to english mode
  611.                      */
  612. # if !defined(FEAT_XFONTSET) && defined(HAVE_X11)
  613. #  define FEAT_XFONTSET            /* Hangul input requires xfontset */
  614. # endif
  615. # if defined(FEAT_XIM) && !defined(LINT)
  616.     Error: You should select only ONE of XIM and HANGUL INPUT
  617. # endif
  618. #endif
  619. #if defined(FEAT_HANGULIN) || defined(FEAT_XIM)
  620. /* # define X_LOCALE */            /* for OS with incomplete locale
  621.                        support, like old linux versions. */
  622. /* # define SLOW_XSERVER */        /* for extremely slow X server */
  623. #endif
  624.  
  625. /*
  626.  * +xfontset        X fontset support.  For outputting wide characters.
  627.  */
  628. #ifndef FEAT_XFONTSET
  629. # if defined(FEAT_MBYTE) && defined(HAVE_X11)
  630. #  define FEAT_XFONTSET
  631. # else
  632. /* #  define FEAT_XFONTSET */
  633. # endif
  634. #endif
  635.  
  636. /*
  637.  * +libcall        libcall() function
  638.  */
  639. /* Using dlopen() also requires dlsym() to be available. */
  640. #if defined(HAVE_DLOPEN) && defined(HAVE_DLSYM)
  641. # define USE_DLOPEN
  642. #endif
  643. #if defined(FEAT_EVAL) && (defined(WIN3264) || ((defined(UNIX) || defined(VMS)) \
  644.     && (defined(USE_DLOPEN) || defined(HAVE_SHL_LOAD))))
  645. # define FEAT_LIBCALL
  646. #endif
  647.  
  648. /*
  649.  * +scrollbind        synchronization of split windows
  650.  */
  651. #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS)
  652. # define FEAT_SCROLLBIND
  653. #endif
  654.  
  655. /*
  656.  * +menu        ":menu" command
  657.  */
  658. #ifdef FEAT_NORMAL
  659. # define FEAT_MENU
  660. # ifdef FEAT_GUI_W32
  661. #  define FEAT_TEAROFF
  662. # endif
  663. #endif
  664.  
  665. /* There are two ways to use XPM. */
  666. #if (defined(HAVE_XM_XPMP_H) && defined(FEAT_GUI_MOTIF)) \
  667.         || defined(HAVE_X11_XPM_H)
  668. # define HAVE_XPM 1
  669. #endif
  670.  
  671. /*
  672.  * +toolbar        Include code for a toolbar (for the Win32 GUI, GTK
  673.  *            always has it).  But only if menus are enabled.
  674.  */
  675. #if defined(FEAT_NORMAL) && defined(FEAT_MENU) \
  676.     && (defined(FEAT_GUI_GTK) \
  677.         || defined(FEAT_GUI_MSWIN) \
  678.         || ((defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \
  679.             && defined(HAVE_XPM)) \
  680.         || defined(FEAT_GUI_PHOTON))
  681. # define FEAT_TOOLBAR
  682. #endif
  683. #if defined(FEAT_TOOLBAR) && !defined(FEAT_MENU)
  684. # define FEAT_MENU
  685. #endif
  686.  
  687. /*
  688.  * +browse        ":browse" command.
  689.  *
  690.  * BROWSE_CURRBUF    Open file browser in the directory of the current
  691.  *            buffer, instead of the current directory.
  692.  */
  693. #if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC))
  694. # define FEAT_BROWSE
  695. #endif
  696. #if defined(FEAT_NORMAL) && defined(FEAT_GUI_MSWIN)
  697. # define BROWSE_CURRBUF
  698. #endif
  699.  
  700. /*
  701.  * +dialog_gui        Use GUI dialog.
  702.  * +dialog_con        May use Console dialog.
  703.  *            When none of these defined there is no dialog support.
  704.  */
  705. #ifdef FEAT_NORMAL
  706. # if defined(FEAT_GUI_MSWIN)
  707. #  define FEAT_GUI_DIALOG
  708. # else
  709. #  if ((defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)) && defined(HAVE_X11_XPM_H)) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)
  710. #   define FEAT_CON_DIALOG
  711. #   define FEAT_GUI_DIALOG
  712. #  else
  713. #   define FEAT_CON_DIALOG
  714. #  endif
  715. # endif
  716. #endif
  717. #if !defined(FEAT_GUI_DIALOG) && (defined(FEAT_GUI_MOTIF) \
  718.     || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK))
  719. /* need a dialog to show error messages when starting from the desktop */
  720. # define FEAT_GUI_DIALOG
  721. #endif
  722. #if defined(FEAT_GUI_DIALOG) && \
  723.     (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) \
  724.      || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MSWIN) \
  725.      || defined(FEAT_GUI_PHOTON))
  726. # define FEAT_GUI_TEXTDIALOG
  727. #endif
  728.  
  729. /*
  730.  * Preferences:
  731.  * ============
  732.  */
  733.  
  734. /*
  735.  * +writebackup        'writebackup' is default on:
  736.  *            Use a backup file while overwriting a file.  But it's
  737.  *            deleted again when 'backup' is not set.  Changing this
  738.  *            is strongly discouraged: You can loose all your
  739.  *            changes when the computer crashes while writing the
  740.  *            file.
  741.  *            VMS note: It does work on VMS as well, but because of
  742.  *            version handling it does not have any purpose.
  743.  *            Overwrite will write to the new version.
  744.  */
  745. #ifndef VMS
  746. # define FEAT_WRITEBACKUP
  747. #endif
  748.  
  749. /*
  750.  * +xterm_save        The t_ti and t_te entries for the builtin xterm will
  751.  *            be set to save the screen when starting Vim and
  752.  *            restoring it when exiting.
  753.  */
  754. /* #define FEAT_XTERM_SAVE */
  755.  
  756. /*
  757.  * DEBUG        Output a lot of debugging garbage.
  758.  */
  759. /* #define DEBUG */
  760.  
  761. /*
  762.  * STARTUPTIME        Timme the startup process.  Writes a "vimstartup" file
  763.  *            with timestamps.
  764.  */
  765. /* #define STARTUPTIME "vimstartup" */
  766.  
  767. /*
  768.  * MEM_PROFILE        Debugging of memory allocation and freeing.
  769.  */
  770. /* #define MEM_PROFILE */
  771.  
  772. /*
  773.  * VIMRC_FILE        Name of the .vimrc file in current dir.
  774.  */
  775. /* #define VIMRC_FILE    ".vimrc" */
  776.  
  777. /*
  778.  * EXRC_FILE        Name of the .exrc file in current dir.
  779.  */
  780. /* #define EXRC_FILE    ".exrc" */
  781.  
  782. /*
  783.  * GVIMRC_FILE        Name of the .gvimrc file in current dir.
  784.  */
  785. /* #define GVIMRC_FILE    ".gvimrc" */
  786.  
  787. /*
  788.  * VIEW_FILE        Name of the default ":mkview" file.
  789.  */
  790. #define VIEW_FILE    "View.vim"
  791.  
  792. /*
  793.  * SESSION_FILE        Name of the default ":mksession" file.
  794.  */
  795. #define SESSION_FILE    "Session.vim"
  796.  
  797. /*
  798.  * USR_VIMRC_FILE    Name of the user .vimrc file.
  799.  * USR_VIMRC_FILE2    Name of alternate user .vimrc file.
  800.  * USR_VIMRC_FILE3    Name of alternate user .vimrc file.
  801.  */
  802. /* #define USR_VIMRC_FILE    "~/foo/.vimrc" */
  803. /* #define USR_VIMRC_FILE2    "~/bar/.vimrc" */
  804. /* #define USR_VIMRC_FILE3    "$VIM/.vimrc" */
  805.  
  806. /*
  807.  * EVIM_FILE        Name of the evim.vim script file
  808.  */
  809. /* #define EVIM_FILE        "$VIMRUNTIME/evim.vim" */
  810.  
  811. /*
  812.  * USR_EXRC_FILE    Name of the user .exrc file.
  813.  * USR_EXRC_FILE2    Name of the alternate user .exrc file.
  814.  */
  815. /* #define USR_EXRC_FILE    "~/foo/.exrc" */
  816. /* #define USR_EXRC_FILE2    "~/bar/.exrc" */
  817.  
  818. /*
  819.  * USR_GVIMRC_FILE    Name of the user .gvimrc file.
  820.  * USR_GVIMRC_FILE2    Name of the alternate user .gvimrc file.
  821.  */
  822. /* #define USR_GVIMRC_FILE    "~/foo/.gvimrc" */
  823. /* #define USR_GVIMRC_FILE2    "~/bar/.gvimrc" */
  824. /* #define USR_GVIMRC_FILE3    "$VIM/.gvimrc" */
  825.  
  826. /*
  827.  * SYS_VIMRC_FILE    Name of the system-wide .vimrc file.
  828.  */
  829. /* #define SYS_VIMRC_FILE    "/etc/vimrc" */
  830.  
  831. /*
  832.  * SYS_GVIMRC_FILE    Name of the system-wide .gvimrc file.
  833.  */
  834. /* #define SYS_GVIMRC_FILE    "/etc/gvimrc" */
  835.  
  836. /*
  837.  * DFLT_HELPFILE    Name of the help file.
  838.  */
  839. /* # define DFLT_HELPFILE    "$VIMRUNTIME/doc/help.txt.gz" */
  840.  
  841. /*
  842.  * File names for:
  843.  * FILETYPE_FILE    switch on file type detection
  844.  * FTPLUGIN_FILE    switch on loading filetype plugin files
  845.  * INDENT_FILE        switch on loading indent files
  846.  * FTOFF_FILE        switch off file type detection
  847.  * FTPLUGOF_FILE    switch off loading settings files
  848.  * INDOFF_FILE        switch off loading indent files
  849.  */
  850. /* # define FILETYPE_FILE    "filetype.vim" */
  851. /* # define FTPLUGIN_FILE    "ftplugin.vim" */
  852. /* # define INDENT_FILE        "indent.vim" */
  853. /* # define FTOFF_FILE        "ftoff.vim" */
  854. /* # define FTPLUGOF_FILE    "ftplugof.vim" */
  855. /* # define INDOFF_FILE        "indoff.vim" */
  856.  
  857. /*
  858.  * SYS_MENU_FILE    Name of the default menu.vim file.
  859.  */
  860. /* # define SYS_MENU_FILE    "$VIMRUNTIME/menu.vim" */
  861.  
  862. /*
  863.  * SYS_OPTWIN_FILE    Name of the default optwin.vim file.
  864.  */
  865. #ifndef SYS_OPTWIN_FILE
  866. # define SYS_OPTWIN_FILE    "$VIMRUNTIME/optwin.vim"
  867. #endif
  868.  
  869. /*
  870.  * SYNTAX_FNAME        Name of a syntax file, where %s is the syntax name.
  871.  */
  872. /* #define SYNTAX_FNAME    "/foo/%s.vim" */
  873.  
  874. /*
  875.  * RUNTIME_DIRNAME    Generic name for the directory of the runtime files.
  876.  */
  877. #ifndef RUNTIME_DIRNAME
  878. # define RUNTIME_DIRNAME "runtime"
  879. #endif
  880.  
  881. /*
  882.  * RUNTIME_GLOBAL    Directory name for global Vim runtime directory.
  883.  *            Don't define this if the preprocessor can't handle
  884.  *            string concatenation.
  885.  *            Also set by "--with-global-runtime" configure argument.
  886.  */
  887. /* #define RUNTIME_GLOBAL "/etc/vim" */
  888.  
  889. /*
  890.  * Machine dependent:
  891.  * ==================
  892.  */
  893.  
  894. /*
  895.  * +fork        Unix only: fork() support (detected by configure)
  896.  * +system        Use system() instead of fork/exec for starting a
  897.  *            shell.  Doesn't work for the GUI!
  898.  */
  899. /* #define USE_SYSTEM */
  900.  
  901. /*
  902.  * +X11            Unix only.  Include code for xterm title saving and X
  903.  *            clipboard.  Only works if HAVE_X11 is also defined.
  904.  */
  905. #if defined(FEAT_NORMAL) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
  906. # define WANT_X11
  907. #endif
  908.  
  909. /*
  910.  * +mouse_xterm        Unix only: Include code for xterm mouse handling.
  911.  * +mouse_dec        idem, for Dec mouse handling.
  912.  * +mouse_jsbterm    idem, for Jsbterm mouse handling.
  913.  * +mouse_netterm    idem, for Netterm mouse handling.
  914.  * (none)        MS-DOS mouse support.
  915.  * +mouse_gpm        Unix only: Include code for Linux console mouse
  916.  *            handling.
  917.  * +mouse_pterm        PTerm mouse support for QNX
  918.  * +mouse        Any mouse support (any of the above enabled).
  919.  */
  920. /* OS/2 and Amiga console have no mouse support */
  921. #if (!defined(AMIGA) && !defined(OS2) && !defined(MACOS)) || defined(FEAT_GUI_AMIGA)
  922. # ifdef FEAT_NORMAL
  923. #  define FEAT_MOUSE_XTERM
  924. # endif
  925. # ifdef FEAT_BIG
  926. #  define FEAT_MOUSE_NET
  927. # endif
  928. # ifdef FEAT_BIG
  929. #  define FEAT_MOUSE_DEC
  930. # endif
  931. # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
  932. #  define DOS_MOUSE
  933. # endif
  934. # if defined(FEAT_NORMAL) && defined(__QNX__)
  935. #  define FEAT_MOUSE_PTERM
  936. # endif
  937. #endif
  938.  
  939. #if defined(FEAT_NORMAL) && defined(HAVE_GPM)
  940. # define FEAT_MOUSE_GPM
  941. #endif
  942. /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
  943. #if !defined(FEAT_MOUSE_TTY) && (defined(FEAT_MOUSE_XTERM) \
  944.     || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \
  945.     || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \
  946.     || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM))
  947. # define FEAT_MOUSE_TTY        /* include non-GUI mouse support */
  948. #endif
  949. #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
  950. # define FEAT_MOUSE        /* include generic mouse support */
  951. #endif
  952.  
  953. /*
  954.  * +clipboard        Clipboard support.  Always used for the GUI.
  955.  * +xterm_clipboard    Unix only: Include code for handling the clipboard
  956.  *            in an xterm like in the GUI.
  957.  */
  958. #ifdef FEAT_GUI
  959. # ifndef FEAT_CLIPBOARD
  960. #  define FEAT_CLIPBOARD
  961. #  ifndef FEAT_VISUAL
  962. #   define FEAT_VISUAL
  963. #  endif
  964. # endif
  965. #endif
  966.  
  967. #if defined(FEAT_NORMAL) && defined(FEAT_VISUAL) \
  968.     && (defined(UNIX) || defined(VMS)) \
  969.     && defined(WANT_X11) && defined(HAVE_X11)
  970. # define FEAT_XCLIPBOARD
  971. # ifndef FEAT_CLIPBOARD
  972. #  define FEAT_CLIPBOARD
  973. # endif
  974. #endif
  975.  
  976. /*
  977.  * +clientserver    Remote control via the remote_send() function
  978.  *            and the --remote argument
  979.  */
  980. #if (defined(WIN32) || defined(FEAT_XCLIPBOARD)) && defined(FEAT_EVAL)
  981. # define FEAT_CLIENTSERVER
  982. #endif
  983.  
  984. /*
  985.  * +termresponse    send t_RV to obtain terminal response.  Used for xterm
  986.  *            to check if mouse dragging can be used and if term
  987.  *            codes can be obtaind.
  988.  */
  989. #if (defined(FEAT_NORMAL) || defined(FEAT_MOUSE)) && defined(HAVE_TGETENT)
  990. # define FEAT_TERMRESPONSE
  991. #endif
  992.  
  993. /*
  994.  * cursor shape        Adjust the shape of the cursor to the mode.
  995.  * mouse shape        Adjust the shape of the mouse pointer to the mode.
  996.  */
  997. #ifdef FEAT_NORMAL
  998. /* MS-DOS console and Win32 console can change cursor shape */
  999. # if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32))
  1000. #  define MCH_CURSOR_SHAPE
  1001. # endif
  1002. # if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16) || defined(FEAT_GUI_MOTIF) \
  1003.     || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) \
  1004.     || defined(FEAT_GUI_PHOTON)
  1005. #  define FEAT_MOUSESHAPE
  1006. # endif
  1007. #endif
  1008.  
  1009. /* GUI and some consoles can change the shape of the cursor.  The code is also
  1010.  * needed for the 'mouseshape' option. */
  1011. #if defined(FEAT_GUI) || defined(MCH_CURSOR_SHAPE) || defined(FEAT_MOUSESHAPE)
  1012. # define CURSOR_SHAPE
  1013. #endif
  1014.  
  1015. /*
  1016.  * +ARP            Amiga only. Use arp.library, DOS 2.0 is not required.
  1017.  */
  1018. #ifndef NO_ARP
  1019. # define FEAT_ARP
  1020. #endif
  1021.  
  1022. /*
  1023.  * +GUI_Athena        To compile Vim with or without the GUI (gvim) you have
  1024.  * +GUI_BeOS        to edit the Makefile.
  1025.  * +GUI_Motif
  1026.  */
  1027.  
  1028. /*
  1029.  * +ole            Win32 OLE automation: Use Makefile.ovc.
  1030.  */
  1031.  
  1032. /*
  1033.  * These features can only be included by using a configure argument.  See the
  1034.  * Makefile for a line to uncomment.
  1035.  * +perl        Perl interface: "--enable-perlinterp"
  1036.  * +python        Python interface: "--enable-pythoninterp"
  1037.  * +tcl            TCL interface: "--enable-tclinterp"
  1038.  * +sniff        Sniff interface: "--enable-sniff"
  1039.  */
  1040.  
  1041. /*
  1042.  * These features are automatically detected:
  1043.  * +terminfo
  1044.  * +tgetent
  1045.  */
  1046.  
  1047. /*
  1048.  * The Sun Workshop features currently only work with Motif.
  1049.  */
  1050. #if !defined(FEAT_GUI_MOTIF) && defined(FEAT_SUN_WORKSHOP)
  1051. # undef FEAT_SUN_WORKSHOP
  1052. #endif
  1053.  
  1054. /*
  1055.  * +signs        Allow signs to be displayed to the left of text lines.
  1056.  *            Adds the ":sign" command.
  1057.  */
  1058. #if defined(FEAT_BIG) || defined(FEAT_SUN_WORKSHOP)
  1059. # define FEAT_SIGNS
  1060. # if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \
  1061.     && defined(HAVE_X11_XPM_H)
  1062. #  define FEAT_SIGN_ICONS
  1063. # endif
  1064. #endif
  1065.  
  1066. /*
  1067.  * +balloon_eval    Allow balloon expression evaluation. Used with a
  1068.  *            debugger and for tooltips.
  1069.  *            Currently only for Athena and Motif.
  1070.  */
  1071. #if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \
  1072.     && (defined(FEAT_TOOLBAR) || defined(FEAT_SUN_WORKSHOP))
  1073. # define FEAT_BEVAL
  1074. # ifndef FEAT_XFONTSET
  1075. #  define FEAT_XFONTSET
  1076. # endif
  1077. #endif
  1078.  
  1079. #if defined(FEAT_SUN_WORKSHOP)
  1080. /*
  1081.  * The following features are (currently) only used by Sun Visual WorkShop 6.
  1082.  * These features could be used with other integrations with debuggers so I've
  1083.  * used separate feature defines.
  1084.  */
  1085. # if !defined(FEAT_MENU)
  1086. #  define FEAT_MENU
  1087. # endif
  1088.  
  1089. /*
  1090.  *            Use an alternative method of X input for a secondary
  1091.  *            command input.
  1092.  */
  1093. # define ALT_X_INPUT
  1094.  
  1095. /*
  1096.  * +footer        Motif only: Add a message area at the bottom of the
  1097.  *            main window area.
  1098.  */
  1099. # define FEAT_FOOTER
  1100.  
  1101. #endif
  1102.